package com.song.anno.aop;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Slf4j
//@Component
//@Aspect
public class RecordTimeAspect {
//    @Pointcut("execution(* com.song.service.imlp.*.*(..))")
//    @Pointcut("execution(* com.song.service.imlp.*.list(..))  || " + "execution(* com.song.service.imlp.*.delete(..))")
//    @Pointcut("execution(* com.song..*.*(..))")  // 匹配song下面所有类所有方法
    @Pointcut("execution(* com.song.exception.controller.*.*(..))")  // 匹配song下面所有类所有方法
    private void pt(){

    }

    @Around("pt()")
    @Order(1)
    public Object recordTime(ProceedingJoinPoint joinPoint) throws Throwable {
        //        记录方法运行的开始时间
        long start = System.currentTimeMillis();

        //        执行原始方法
        Object result = joinPoint.proceed();

        //        计算结束时间，计算耗时
        long end = System.currentTimeMillis();
        log.info("方法：{}  方法运行耗时：{}",joinPoint.getSignature(), end - start);

        return result;
    }


//    @Before("pt()")
//    public void before(JoinPoint joinPoint) {
//        log.info("方法开始执行");
//        log.info("方法：{}  参数：{}",joinPoint.getTarget().getClass().getName(), joinPoint.getArgs());
//
//    }
}
